#include <stdlib.h>
#define top() top
typedef struct stack stack;
struct stack{
       int *val;
       int top,type,limit;
};
void stack_setsize(stack *base,int size){
     (*base).type=size;
}
void stack_alloc(stack *base,int arg){
     (*base).limit=arg;
     (*base).val=(int*)realloc((*base).val,((*base).type+1) * (arg));
}
void stack_push(stack *base,int arg){
     if ((*base).limit<=1+(*base).top())
        stack_alloc(&(*base),1+(*base).top());
     (*base).val[(*base).top()++]=arg;
}
void stack_pop(stack *base,int arg){
     if ((*base).top-arg>0)
        (*base).top-=arg;
     else
         (*base).top=0;
}
